package com.nbst.dao.mapper.mes;

import java.util.List;
import java.util.Map;

import com.nbst.dao.base.mapper.BaseMapper;
import com.nbst.model.mes.ApplyItemEntry;
import com.nbst.model.mes.NotOutItem;
import com.nbst.model.mes.NotOutItemSummary;
import com.nbst.model.wms.PendingOutStockItemEntry;

/**
 * @ClassName: TApplyItemEntryMapper
 * @Description:t_apply_item_entry表体修改
 * @author: HuXinshuai
 * @date: 2018年10月26日 下午3:56:05
 * @Copyright: 宁波沙塔. All rights reserved.
 */
public interface ApplyItemEntryMapper extends BaseMapper<ApplyItemEntry> {

	/**
	 * 根据fApplyId、物料内码修改物料实发数
	 * 
	 * @param map
	 * @return int
	 * @author King
	 * @date 2019年3月4日
	 */
	int updateActualQty(Map<String, Object> map);

	/**
	 * 新增物料申请表与仓库的临时关系
	 * 
	 * @param map
	 * @return int
	 * @author King
	 * @date 2019年4月9日
	 */
	int insertApplyStockTemp(Map<String, Object> map);

	/**
	 * 根据物料申请单id,仓库id删除物料申请单与仓库的关系
	 * 
	 * @param map
	 * @return int
	 * @author King
	 * @date 2019年4月9日
	 */
	int deleteApplyStockTemp(Map<String, Object> map);

	/**
	 * 根据派工id查询库存id
	 * 
	 * @param id
	 * @return List<Integer>
	 * @author King
	 * @date 2019年4月9日
	 */
	List<Map<String, Object>> findByStock(Map<String, Object> map);

	/**
	 * 根据物料申请单id查询实发数为0的物料有几条
	 * 
	 * @param id
	 * @return Integer
	 * @author King
	 * @date 2019年4月9日
	 */
	Integer getNotOutStockNum(Integer id);

	/**
	 * 根据物料申请单id、仓库id查询还是否有物料没有领完
	 * 
	 * @param map
	 * @return Integer
	 * @author King
	 * @date 2019年4月9日
	 */
	Integer getStockItemNum(Map<String, Object> map);

	/**
	 * 根据物料申请单id查询该物料申请单物料是否有发料数量
	 * 
	 * @param id
	 * @return Integer
	 * @author King
	 * @date 2019年4月13日
	 */
	Integer getOutStockNum(Integer id);

	/**
	 * 根据物料申请单id查询还未完全发完的物料条数
	 * 
	 * @param id
	 * @return Integer
	 * @author King
	 * @date 2019年4月15日
	 */
	Integer getNotOutStockFinishNum(Integer id);

	/**
	 * 根据外协转出id查询物料申请单信息
	 * 
	 * @param fSubcOutInterId
	 * @return List<ApplyItemEntry>
	 * @author King
	 * @date 2019年5月20日
	 */
	List<ApplyItemEntry> findBySubcOutCondition(Integer fSubcOutInterId);

	/**
	 * 根据条件查询物料申请表分录
	 * 
	 * @param map
	 * @return List<ApplyItemEntry>
	 * @author King
	 * @date 2019年10月23日
	 */
	List<ApplyItemEntry> findByCondition1(Map<String, Object> map);

	/**
	 * 根据物料申请单id查询受限制的物料申请记录条数
	 * 
	 * @param fAppiyId
	 * @return Integer
	 * @author King
	 * @date 2019年5月20日
	 */
	Integer getConfineItemCount(Integer fAppiyId);

	void updateActualQtyByApplyId(Map<String, Object> map);

	/**
	 * 根据派工单id\仓库id获取派工单待发料物料明细列表
	 * 
	 * @param map
	 *            id\fStockID
	 * @return List<PendingOutStockItemEntry>
	 * @author King
	 * @date 2020年3月23日
	 */
	List<PendingOutStockItemEntry> getDispatchApplyItemList(Map<String, Object> map);

	/**
	 * 根据委外单id\仓库id获取派工单待发料物料明细列表
	 * 
	 * @param map
	 *            id\fStockID
	 * @return List<PendingOutStockItemEntry>
	 * @author King
	 * @date 2020年3月23日
	 */
	List<PendingOutStockItemEntry> getSubcApplyItemList(Map<String, Object> map);

	List<ApplyItemEntry> getAppitems();

	/**
	 * 获取未发料信息
	 * 
	 * @param map
	 * @return List<getNotOutItemLists>
	 * @author King
	 * @date Apr 22, 2020
	 */
	List<NotOutItem> getNotOutItemLists(Map<String, Object> map);

	/**
	 * 获取未发料信息
	 * 
	 * @param map
	 * @return List<getNotOutItemLists>
	 * @author King
	 * @date Apr 22, 2020
	 */
	List<NotOutItemSummary> getNotOutItemSummaryLists(Map<String, Object> map);

	/**
	 * 根据派工单获取派工单零件的单位用量
	 * 
	 * @param fCode
	 *            派工单号
	 * @return List<Map<String,Object>>
	 * @author King
	 * @date 2020年5月8日
	 */
	List<Map<String, Object>> getItemUnitQty(Integer id);

	/**
	 * 根据物料申请单id查询哪些物料已发过料了
	 * 
	 * @param fApplyId
	 * @return Integer
	 * @author King
	 * @date 2020年5月19日
	 */
	Integer getOutItemByApplyId(Integer fApplyId);

}